#pragma once

#include <vector>
#include <string>
#include "gl/glew.h"
#include "Model.h"
#include "Camera.h"
#include "Light.h"
#include "IRenderer.h"
#include "Cvars.h"
#include "SmartPtr.h"

using std::vector;
using std::string;

class Scene;
typedef SmartPtr<Scene> ScenePtr;

class Scene
{
public:
	Scene();

	void addModel(ModelPtr model);

	void addCamera(CameraPtr camera);
	
	void render(RendererPtr renderer);

	CameraPtr getActiveCamera();

	ModelPtr getActiveModel();
	
protected:
	vector<ModelPtr> _models;	
	vector<CameraPtr> _cameras;

	CvarPtr _activeCamera;
	CvarPtr _activeModel;
	CvarPtr _wireframeColor;
	CvarPtr _wireframeColorSelected;
};